home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / basic / 6300gray.zip / GRAYTEST.BAS < prev    next >
BASIC Source File  |  1988-08-12  |  11KB  |  220 lines

  1. 10  REM This program draws a gray scale bar centered in the middle of the
  2. 12  REM screen of gray scale patterns simulating gray levels from 0 through 15.
  3. 14  REM Each pattern consists of a 5 by 3 array of pixels.  The reason for
  4. 16  REM choosing a 5 by 3 array is that a gray scale image of 128 by 128 of
  5. 18  REM them will just fill the screen of a PC6300 (640 x 400).  The 5 by 3
  6. 20  REM array is stored in an integer array, called patternx (x is a single
  7. 22  REM hexadecimal digit in the range 0..F), of 4 elements defined as follows
  8. 24  REM 
  9. 26  REM    patternx(0) = width of array (5)
  10. 28  REM    patternx(1) = heighth of array (3)
  11. 30  REM    patternx(2) = first two bytes of array
  12. 32  REM    patternx(3) = second two bytes of array
  13. 34  REM
  14. 36  REM Here is how the array is stored in patternx(2) and patternx(3); for
  15. 38  REM instance, if pixel 9 is on then bit C of patternx(2) is set.
  16. 40  REM
  17. 42  REM            ARRAY
  18. 44  REM    ┌───┬───┬───┬───┬───┐
  19. 46  REM    │ 1 │ 2 │ 3 │ 4 │ 5 │
  20. 48  REM    ├───┼───┼───┼───┼───┤
  21. 50  REM    │ 6 │ 7 │ 8 │ 9 │10 │
  22. 52  REM    ├───┼───┼───┼───┼───┤
  23. 54  REM    │11 │12 │13 │14 │15 │
  24. 56  REM    └───┴───┴───┴───┴───┘
  25. 58  REM
  26. 60  REM                HIGH BYTE       PATTERNX(2)        LOW BYTE
  27. 62  REM    ┌───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┐
  28. 64  REM    │ 6 │ 7 │ 8 │ 9 │10 │   │   │   │ │ 1 │ 2 │ 3 │ 4 │ 5 │   │   │   │
  29. 66  REM    └───┴───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┴───┘
  30. 68  REM      F   E   D   C   B   A   9   8     7   6   5   4   3   2   1   0
  31. 70  REM
  32. 72  REM
  33. 74  REM                HIGH BYTE       PATTERNX(3)        LOW BYTE
  34. 76  REM    ┌───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┐
  35. 78  REM    │   │   │   │   │   │   │   │   │ │11 │12 │13 │14 │15 │   │   │   │
  36. 80  REM    └───┴───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┴───┘
  37. 82  REM      F   E   D   C   B   A   9   8     7   6   5   4   3   2   1   0
  38. 84  REM
  39. 86  REM BASIC uses two's complement notation to store signed integers in the
  40. 88  REM range -32768 to 32767 so the table below gives the integer values
  41. 90  REM of the two array elements corresponding to each pixel in the array
  42. 92  REM
  43. 94  REM  array   patternx   patternx        array   patternx   patternx
  44. 96  REM  pixel       2          3           pixel       2          3   
  45. 98  REM  ───────────────────────────        ───────────────────────────
  46. 100 REM    1       128          0             9      4096          0
  47. 102 REM    2        64          0            10      2048          0
  48. 104 REM    3        32          0            11         0        128
  49. 106 REM    4        16          0            12         0         64
  50. 108 REM    5         8          0            13         0         32
  51. 110 REM    6    -32768          0            14         0         16
  52. 112 REM    7     16384          0            15         0          8
  53. 114 REM    8      8192          0
  54. 116 REM
  55. 118 REM As an example of using this table, if an array had pixels 2, 5,
  56. 120 REM 6, 11 & 13 on then
  57. 122 REM
  58. 124 REM        patternx(2) = 64 OR 8 OR -32768
  59. 126 REM                    = 64 + 8 + (-32768)  (Think about this: can OR be
  60. 128 REM                    = -32696              replaced by + ?  Yes! Why?)
  61. 130 REM        patternx(3) = 128 OR 32
  62. 132 REM                    = 128 + 32
  63. 134 REM                    = 160
  64. 136 REM
  65. 138 REM All of the patterns used are now described.  Pattern 0 is the array
  66. 140 REM with no pixels on and patterns 8 through 15 are the complements of
  67. 142 REM patterns 7 through 1, respectively.  The description of patterns 1
  68. 144 REM through 7 is given along with the integer values stored in the
  69. 146 REM integer arrays describing the patterns.
  70. 148 REM
  71. 150 REM                         
  72. 152 REM           ARRAY 1               PATTERNX         PATTERNX
  73. 154 REM    ┌───┬───┬───┬───┬───┐            2                3   
  74. 156 REM    │   │   │   │   │   │                                 
  75. 158 REM    ├───┼───┼───┼───┼───┤         8192                0   
  76. 160 REM    │   │   │ █ │   │   │
  77. 162 REM    ├───┼───┼───┼───┼───┤
  78. 164 REM    │   │   │   │   │   │
  79. 166 REM    └───┴───┴───┴───┴───┘
  80. 168 REM
  81. 170 REM                         
  82. 172 REM           ARRAY 2               PATTERNX         PATTERNX
  83. 174 REM    ┌───┬───┬───┬───┬───┐            2                3   
  84. 176 REM    │   │   │   │   │   │                                 
  85. 178 REM    ├───┼───┼───┼───┼───┤         8192              128   
  86. 180 REM    │   │   │ █ │   │   │
  87. 182 REM    ├───┼───┼───┼───┼───┤
  88. 184 REM    │ █ │   │   │   │   │
  89. 186 REM    └───┴───┴───┴───┴───┘
  90. 188 REM
  91. 190 REM                         
  92. 192 REM           ARRAY 3               PATTERNX         PATTERNX
  93. 194 REM    ┌───┬───┬───┬───┬───┐            2                3   
  94. 196 REM    │ █ │   │   │   │   │                                 
  95. 198 REM    ├───┼───┼───┼───┼───┤         2176               32   
  96. 200 REM    │   │   │   │   │ █ │
  97. 202 REM    ├───┼───┼───┼───┼───┤
  98. 204 REM    │   │   │ █ │   │   │
  99. 206 REM    └───┴───┴───┴───┴───┘
  100. 208 REM
  101. 210 REM                         
  102. 212 REM           ARRAY 4               PATTERNX         PATTERNX
  103. 214 REM    ┌───┬───┬───┬───┬───┐            2                3   
  104. 216 REM    │ █ │   │   │   │   │                                 
  105. 218 REM    ├───┼───┼───┼───┼───┤         2176               80   
  106. 220 REM    │   │   │   │   │ █ │
  107. 222 REM    ├───┼───┼───┼───┼───┤
  108. 224 REM    │   │ █ │   │ █ │   │
  109. 226 REM    └───┴───┴───┴───┴───┘
  110. 228 REM
  111. 230 REM                          
  112. 232 REM           ARRAY 5              PATTERNX         PATTERNX
  113. 234 REM    ┌───┬───┬───┬───┬───┐           2                3   
  114. 236 REM    │ █ │   │   │ █ │   │                                
  115. 238 REM    ├───┼───┼───┼───┼───┤        8336               72   
  116. 240 REM    │   │   │ █ │   │   │
  117. 242 REM    ├───┼───┼───┼───┼───┤
  118. 244 REM    │   │ █ │   │   │ █ │
  119. 246 REM    └───┴───┴───┴───┴───┘
  120. 248 REM
  121. 250 REM                         
  122. 252 REM           ARRAY 6               PATTERNX         PATTERNX
  123. 254 REM    ┌───┬───┬───┬───┬───┐            2                3   
  124. 256 REM    │ █ │   │   │ █ │   │                                 
  125. 258 REM    ├───┼───┼───┼───┼───┤        10384               80   
  126. 260 REM    │   │   │ █ │   │ █ │
  127. 262 REM    ├───┼───┼───┼───┼───┤
  128. 264 REM    │   │ █ │   │ █ │   │
  129. 266 REM    └───┴───┴───┴───┴───┘
  130. 268 REM
  131. 270 REM                         
  132. 272 REM           ARRAY 7               PATTERNX         PATTERNX
  133. 274 REM    ┌───┬───┬───┬───┬───┐            2                3   
  134. 276 REM    │ █ │   │   │ █ │   │                                 
  135. 278 REM    ├───┼───┼───┼───┼───┤        26768               80   
  136. 280 REM    │   │ █ │ █ │   │ █ │
  137. 282 REM    ├───┼───┼───┼───┼───┤
  138. 284 REM    │   │ █ │   │ █ │   │
  139. 286 REM    └───┴───┴───┴───┴───┘
  140. 288 REM
  141. 290 REM                   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  142. 292 REM                   % Beginning of program to draw a gray %
  143. 294 REM                   % bar in the middle of the screen     %
  144. 296 REM                   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  145. 298 DEFINT I, J, X, Y, P
  146. 300 DIM PATTERN0(3), PATTERN1(3), PATTERN2(3), PATTERN3(3)
  147. 302 DIM PATTERN4(3), PATTERN5(3), PATTERN6(3), PATTERN7(3)
  148. 304 DIM PATTERN8(3), PATTERN9(3), PATTERNA(3), PATTERNB(3)
  149. 306 DIM PATTERNC(3), PATTERND(3), PATTERNE(3), PATTERNF(3)
  150. 308 REM                   %%%%%%%%%%%%%%%%%%%
  151. 310 REM                   % Function Key 10 %
  152. 312 REM                   % returns to DOS  %
  153. 314 REM                   %%%%%%%%%%%%%%%%%%%
  154. 316 KEY 10,"": KEY OFF
  155. 318 KEY (10) ON : ON KEY(10) GOSUB 446
  156. 320 SCREEN 100
  157. 322 COLOR 7
  158. 324 CLS
  159. 326 PATTERN0(0)=5 : PATTERN0(1) = 3
  160. 328 PATTERN1(0)=5 : PATTERN1(1) = 3
  161. 330 PATTERN2(0)=5 : PATTERN2(1) = 3
  162. 332 PATTERN3(0)=5 : PATTERN3(1) = 3
  163. 334 PATTERN4(0)=5 : PATTERN4(1) = 3
  164. 336 PATTERN5(0)=5 : PATTERN5(1) = 3
  165. 338 PATTERN6(0)=5 : PATTERN6(1) = 3
  166. 340 PATTERN7(0)=5 : PATTERN7(1) = 3
  167. 342 PATTERN8(0)=5 : PATTERN8(1) = 3
  168. 344 PATTERN9(0)=5 : PATTERN9(1) = 3
  169. 346 PATTERNA(0)=5 : PATTERNA(1) = 3
  170. 348 PATTERNB(0)=5 : PATTERNB(1) = 3
  171. 350 PATTERNC(0)=5 : PATTERN